This invention relates to integrated circuits, for example, a programmable block architected heterogeneous integrated circuit.
Current application specific integrated circuit (ASIC) designs are built from a family of primitive logic elements such as NAND gates, NOR gates, multiplexers and adders. This may have been an acceptable design process when the gate count was low, for example, 50K or less. However, as the density of ASIC's increases, the method of building an ASIC from a family of primitive elements becomes very inefficient, error prone and time consuming.
One improvement over building ASIC's from a family of primitive logic elements is to pre-diffuse an ASIC with selected function blocks wherein the function blocks are designed from the family of primitive elements. However, since the function blocks are pre-diffused, they are confined to fixed locations within the ASIC. As a result, it may be difficult to modify the pre-diffused ASIC to accommodate a later ASIC design thereby prohibiting one from re-using the work generated from the earlier pre-diffused ASIC.
As an example, consider an ASIC that includes a first function block pre-diffused in a selected corner of the ASIC. Further, the input ports of the first function block are located near the periphery of the ASIC for coupling to I/O buffers. Further, the output ports of the first function block are coupled to input ports of a second function block.
Now assume that in a later ASIC design, one would like to modify the existing ASIC by inserting a third function block between the I/O buffers and the first function block. However, due to the proximity of the pre-diffused first function block, the interconnection between the first and the third function blocks may be difficult if not impossible to establish. Thus, all work previously performed on the earlier ASIC becomes futile when developing the later modified ASIC.
Hence, a need exists for a block architected integrated circuit that allows for re-use of earlier developed function blocks.